package br.com.rhweb.util;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import org.hibernate.HibernateException;
import org.hibernate.Session;

import br.com.rhweb.dao.Dao;
import br.com.rhweb.dao.IDao;
import br.com.rhweb.hibernate.HibernateUtil;
import br.com.rhweb.modelos.Bairro;
import br.com.rhweb.modelos.Endereco;
import br.com.rhweb.modelos.Secretarias;
import br.com.rhweb.modelos.Unidade_de_Trabalho;

public class ExportaUnidades {

	public static void main(String[] args) {
		PreparedStatement pstm ;
		final ResultSet rs;

		String sql = "SELECT * FROM UNIDADE_TRAB";
		
		try {
			pstm = ConexaoJDBC.getConnection().prepareStatement(sql);
			rs = pstm.executeQuery();
			new Thread(){
				public void run(){
					try {
						while(rs.next()){
							Session s = HibernateUtil.getSessionfactory().openSession();;
							IDao<Unidade_de_Trabalho> daoUnidadeTrabalho;
							IDao<Secretarias> daoSecretarias;
							
							Unidade_de_Trabalho unidadeTrabalho;
							Secretarias secretaria;
	

							daoSecretarias = new Dao<Secretarias>(s, Secretarias.class);
							daoUnidadeTrabalho = new Dao<Unidade_de_Trabalho>(s, Unidade_de_Trabalho.class);
							
							unidadeTrabalho = new Unidade_de_Trabalho();							
							unidadeTrabalho.setId(Integer.parseInt(rs.getString("COD_UNID")));
							unidadeTrabalho.setDescricao(rs.getString("DESC_UNID"));
							System.out.println("CODIGO: "+rs.getString("COD_SEC"));							
							secretaria = daoSecretarias.load(Integer.parseInt(rs.getString("COD_SEC")));
							unidadeTrabalho.setSecretaria(secretaria);
							s.beginTransaction();
							daoUnidadeTrabalho.save(unidadeTrabalho);						
							s.getTransaction().commit();						
							try{
								sleep(5);
							}catch (Exception e) {
								System.out.println("Erro: "+e.getMessage());
							}
						}
					} catch (HibernateException e) {
						System.out.println("Hibernate Exception Message: "+e.getMessage());
						System.out.println("Hibernate Exception Cause: "+e.getCause());
					} catch (SQLException e) {
						System.out.println("SQLException Exception Message: "+e.getMessage());
						System.out.println("SQLException Exception Cause: "+e.getCause());
					}
				}	
			}.start();	

			ConexaoJDBC.getConnection().close();
			
		} catch (SQLException e) {
			//s.getTransaction().rollback();
			System.out.println("Erro: "+e.getMessage());
		}

	}
	
	
}
